package dominioEntity;

import hbt.PersistentObject;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

import dominioTO.ItemCotizacionTO;
import dominioTO.OrdenPedidoClienteTO;

@Entity
public class OrdenPedidoCliente extends PersistentObject {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Date fecha;
	
	@LazyCollection(LazyCollectionOption.FALSE)
	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "cliente_id")
	private Cliente cliente;
	
	private String ordenPedidoDelCliente;
	private String estado;
	
	@LazyCollection(LazyCollectionOption.FALSE)
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "ordenPedidoCliente_id")
	private List<ItemCotizacion> itemCotizaciones ;

	public OrdenPedidoCliente() {
		super();
		// TODO Auto-generated constructor stub
		
	}
	
	public static String Aceptada= "Aceptada";
	public static String AceptadaPedidoRealizado= "Aceptada - Pedido CPR Realizado";
	public static String Entregado= "Entregado";

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public String getOrdenPedidoDelCliente() {
		return ordenPedidoDelCliente;
	}

	public void setOrdenPedidoDelCliente(String ordenPedidoDelCliente) {
		this.ordenPedidoDelCliente = ordenPedidoDelCliente;
	}
	
	public List<ItemCotizacion> getItemsCotizados() {
		return itemCotizaciones;
	}

	public void setItemCotizaciones(List<ItemCotizacion> itemsCotizados) {
		this.itemCotizaciones = itemsCotizados;
	}

	/**
	 * @return the estado
	 */
	public String getEstado() {
		return estado;
	}

	/**
	 * @param estado the estado to set
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}

	public OrdenPedidoClienteTO getDTO()
	{
		OrdenPedidoClienteTO dto= new OrdenPedidoClienteTO();
		
		dto.setIdCotizacion(super.getId());
		dto.setFecha(this.fecha);
		dto.setCliente(cliente.getDTO());
		dto.setOrdenPedidoDelCliente(ordenPedidoDelCliente);
		dto.setEstado(estado);
		List<ItemCotizacionTO> itemTO = new ArrayList<ItemCotizacionTO>();
		for(ItemCotizacion item:itemCotizaciones)
		{
			itemTO.add(item.getDTO());
		}
		dto.setCotizaciones(itemTO);
		return dto;		
	}
	
	@Override
	public String toString() {
		return "OrdenPedidoCliente [fecha=" + fecha + ", cliente=" + cliente
				+ ", ordenPedidoDelCliente=" + ordenPedidoDelCliente
				+ ", idCotizacion=" + super.getId() + ", itemsCotizados="
				+ itemCotizaciones + "]";
	}
	
	

}
